"""
编写程序以检查用户输入的密码的有效性。
检查密码的标准为：
1. [a-z]之间至少有 1 个字母
2. [0-9]之间至少有 1 个数字
1. [A-Z]之间至少有一个字母
3. [$＃@]中至少有 1 个字符
4.最短交易密码长度：6
5.交易密码的最大长度：12
程序接受一系列逗号分隔的密码，进行检查。再输出符合条件的密码，每个密码用逗
号分隔。
例如：程序的输入：
abcdEF12＃@,ccword12
程序的输出：
abcdEF12＃@
"""

import string
import re

def check(pwd):
    """
    4.最短交易密码长度：6
    5.交易密码的最大长度：12
    :param pwd:
    :return:
    """
    if not isinstance(pwd, str) or len(pwd) < 6 or len(pwd) > 12:
        return False
    d = {1: "weak", 2: "below middle", 3: "above middle", 4: "strong"}
    r = [False] * 4
    for ch in pwd:
        # [0-9]之间至少有 1 个数字
        if not r[0] and ch in string.digits:
            r[0] = True
        # [a-z]之间至少有 1 个字母
        elif not r[1] and ch in string.ascii_lowercase:
            r[1] = True
        # [A-Z]之间至少有一个字母
        elif not r[2] and ch in string.ascii_uppercase:
            r[2] = True
        # [$＃@]中至少有 1 个字符
        elif not r[3] and ch in "$＃@":
            r[3] = True
    if r.count(True) == 4:
        return True
    else :
        return False

pwdstr = input("请输入逗号分隔的密码")
pwdlist = re.split(',',pwdstr)
pwdmet = ",".join(list(filter(check,pwdlist)))
print(pwdmet)




